import { MsgEnum, CommentWayEnum } from '@/enums'

export type CommentParam = {
    text: string;
    index: number;
    subIndex: number;
    type: string
}

/**
 * 数据加载参数
 */
export type LoadMoreParam = {
    /** 加载名称 */
    loadName: string,
    /** 加载中 */
    loading?: boolean | false,
    /** 禁用 */
    disabled?: boolean | false 
}

/**
 * 菜单信息
 */
export type MenuItem = {
    /** 菜单ID */
    menu_id: number,
    /** 菜单图标 */
    menu_icon: string,
    /** 菜单名称 */
    menu_name: string,
    /** 菜单地址 */
    menu_url: string,
    /** 是否允许查询网站列表 */
    is_allow_query: boolean
}

/**
 * 轮播图信息
 */
export type CarouselItem = {
    /** 轮播图id */
    id: number;
    /** 轮播图标题 */
    title: string;
    /** 轮播图封面 */
    img: string;
    /** 轮播图url地址 */
    url: string;
    /** 状态 */
    status: number;
    /** 创建时间 */
    time: number;
}

/**
 * 图片预览参数
 */
export type ImgPreviews = {
    html: string,
    url: string,
    h: number,
    w: number,
    img: ImgStyle
}

/**
 * 图片样式
 */
export type ImgStyle = {
    width: string,
    height: string,
    transform: string,
}

/**
 * 文章推荐信息
 */
export type ArticleRecommendItem = {
    /** 文章内码 */
    wznm: string,
    /** 文章封面 */
    thumb: string,
    /** 文章标题 */
    title: string,
    /** 文章描述 */
    description: string,
    /** 栏目名称 */
    columnName: string,
    /** 发布时间 */
    time: number
}

/**
 * 最新评论信息
 */
export type LastCommentItem = {
    /** 评论ID */
    comment_id: number,
    /** 文章内码 */
    wznm: string,
    /** 文章标题 */
    title: string,
    /** 评论内容 */
    content: string,
    /** 评论类型 */
    type: CommentWayEnum,
    /** 评论人员信息 */
    comment_user_info: UserInfo,
    /** 评论时间 */
    comment_time: number
}

/**
 * 友情链接信息
 */
export type LinkItem = {
    /** 友链名称 */
    title: string,
    /** 友链图标 */
    icon: string,
    /** 友链地址 */
    url: string,
    /** 友链描述 */
    describe: string
    /** 是否开启浏览器新窗口 */
    target: string
}

/**
 * 文章信息
 */
export type ArticleItem = {
    wznm: string                // 文章内码
    img: string                 // 文章图片
    title: string               // 文章标题
    description: string         // 文章描述
    releaseTime: string         // 发布时间
    hits: number                // 点击数
    postNum: number             // 评论数
    columnName: string          // 文章来源
    labels: string              // 标签信息
    label: Array<string>        // 文章标签集合
    auther_user_info: UserInfo  // 作者基本信息
}

/**
 * 文章详情信息
 */
export type ArticleInfo = { 
    /** 文章id */
    id: number,
    /** 文章内码 */
    wznm: string,
    /** 文章标题 */
    title: string,
    /** 文章描述 */
    description: string,
    /** content */
    content: string,
    /** 文章来源方式 */
    fromWay: number,
    /** 文章来源网址 */
    fromUrl: string,
    /** 发布时间 */
    releaseTime: number,
    /** 浏览数 */
    hits: number,
    /** 评论数 */
    postNum: number
    /** 点赞数 */
    giveLikeNum?: number | 0,
    /** 收藏数 */
    collectNum: number,
    /** 文章专栏ID */
    columnId: number,
    /** 用户是否已点赞 */
    is_give_like: number,
    /** 用户是否已收藏 */
    is_collect: number,
    /** 专栏名称 */
    columnName: string,
    /** 标签信息 */
    label: Array<string>,
    /** 作者基本信息 */
    auther_user_info?: UserInfo
}

/**
 * 评论信息
 */
export type CommentItem = {
    /** 评论id */
    comment_id: number,
    /** 文章内码 */
    wznm: string,
    /** 评论内容 */
    content: string,
    /** 评论时间 */
    comment_time: number,
    /** 评论回复数量 */
    reply_count: number,
    /** 图片信息 */
    pic: {
        /** 宽度（像素） */
        width: number,
        /** 高度（像素） */
        height: number,
        /** 图片类型（1.表情包 2.评论图片） */
        type: number,
        /** 图片地址 */
        url: string
    },
    /** 评论级别 */
    level: number,
    /** 是否展示评论框 */
    _show: boolean,
    /** 是否加载中 */
    loading: boolean,
    /** 评论人员信息 */
    comment_user_info: UserInfo,
    /** 回复人员信息 */
    reply_user_info: UserInfo,
    /** 评论子数据集合 */
    children: Array<CommentItem>
}

/**
 * 通知提醒信息
 */
export type NoticeItem = {
    /** 网站通知信息表主键 */
    remind_id: number,
    /** 通知类型（1点赞 2评论 3文章收藏） */
    remind_type: number,
    /** 通知时间 */
    remind_time: number,
    /** 是否已读（1是 0否） */
    is_read: number,
    /** 用户信息 */
    root_user_info: UserInfo,
    /** 目标用户信息 */
    target_user_info: UserInfo,
    /** 文章信息 */
    blog_info: ArticleInfo,
    /** 用户评论信息 */
    comment_info: CommentItem
}

/**
 * 聊天会话信息
 */
export type SessionItem = {
    session_id: number          // 会话id
    text: string                // 最新消息
    active_time: number         // 会话最后活跃时间(用来排序)
    unread_count: number        // 未读数量
    target_user_info?: UserInfo  // 目标用户信息
}

/**
 * 聊天会话消息信息
 */
export type MessageItem = {
    fromUser: UserInfo           // 用户信息
    message: MessageType         // 消息详情
    timeBlock?: string           // 时间段（可选）
    loading?: boolean            // 是否加载中
}

/**
 * 消息类型
 */
export type MessageType = {
    /** 消息ID */
    id: number
    /** 会话ID */
    sessionId: number
    /** 接收者ID */
    receiveUid: string
    /** 消息发送时间 */
    sendTime: number
    /** 消息类型 */
    type: MsgEnum
    /** 消息体 */
    body: TextBody | ImageBody
}

/** 
 * 文本消息体
 */
export type TextBody = {
    /** 消息内容 */
    content: string,
    /** 回复 */
    reply: ReplyType
}

/** 图片消息体 */
export type ImageBody = {
    size: number
    url: string
    width: number
    height: number
}

export type ReplyType = {
    id: number
    nickName: string
    type: MsgEnum
    /** 根据不同类型回复的消息展示也不同-`过渡版` */
    body: any
    /**
     * 是否可消息跳转
     * @enum {number}  `0`否 `1`是
     */
    canCallback: number
    /** 跳转间隔的消息条数  */
    gapCount: number
}

/**
 * 用户信息
 */
export type UserInfo = {
    // uid: number                 // 用户uid
    yhnm: string                // 用户内码
    email?: string               // 用户邮箱
    avatar: string              // 头像路径
    cover?: string               // 用户封面
    nickName: string            // 用户昵称
    sex?:string                  // 性别
    birthday?: string            // 出生日期
    address?:string              // 居住地
    signature?:string            // 个性签名
    qq?:string                   // qq
    weixin?:string               // 微信号
    webSiteName?:string          // 个人网站名称
    webSiteUrl?:string           // 个人网站url地址
    is_follow?:boolean             // 是否已关注
    regTime: number
    loginTime: number
    tj_info: {
        article_num: number,
        attention_num: number,
        comment_num: number,
        notice_num: number,
        message_num: number,
    }
}

/**
 * 表情包参数
 */
export type EmojiParam = {
    url: string                 // 路径
    maxHeight?: string           // 最大高度
    height?: string              // 高度
    width?: string               // 宽度
    type: number                 // 表情包类型
}

/**
 * 博主信息
 */
export type BloggerInfo = {
    /** 博主头像 */
    blogger_profile: string,
    /** 博主姓名 */
    blogger_name: string,
    /** 博主个性签名 */
    blogger_signature: string,
    /** 博主QQ */
    blogger_qq: string,
    /** 博主微信二维码 */
    blogger_chat_code: string,
    /** 背景图片 */
    background_img: string,
    /** 网站统计信息 */
    site_count_info: {
        /** 文章数量 */
        article_count: number,
        /** 评论数量 */
        comment_count: number,
        /** 浏览数量 */
        browse_count: number
    }
}